﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Librerias;
using System.IO;

namespace eCampusWeb
{
    public partial class MaterialCrear : System.Web.UI.Page
    {
        ENMaterial nuestroMaterial;
        ENTurno t;
        ENCursar c;

        #region Page_Load(object sender, EventArgs e)
        protected void Page_Load(object sender, EventArgs e)
        {
           

            if (!IsPostBack)
            {
                lbAviso.Visible = false;
                nuestroMaterial = new ENMaterial();
                t = new ENTurno();
                c = new ENCursar();

                try
                {
                    string usuario = HttpContext.Current.User.Identity.Name;

                    //Profesor
                    if (Convert.ToInt32(Session["tipo"]) == 1)
                    {
                        enciendeTodo();
                        DataTable asigProfe = t.GetAsignaturasProfesor(Session["correo"].ToString());
                        DropDownList1.DataSource = asigProfe;
                        DropDownList1.DataTextField = asigProfe.Columns[0].ToString();
                        DropDownList1.DataValueField = asigProfe.Columns[0].ToString();
                        DropDownList1.DataBind();
                    }
                    //Alumno
                    else if (Convert.ToInt32(Session["tipo"]) == 2)
                    {
                        enciendeTodo();
                        DataTable asigAlum = c.GetAsignaturasAlumno(Session["correo"].ToString());
                        DropDownList1.DataSource = asigAlum;
                        DropDownList1.DataTextField = asigAlum.Columns[0].ToString();
                        DropDownList1.DataValueField = asigAlum.Columns[0].ToString();
                        DropDownList1.DataBind();
                    }
                    //Si no es profesor o alumno
                    else {
                            apagaTodo();
                            ponAviso("¡Opss! Debe estar autenticado cómo profesor o alumno para acceder a Crear Materiales");
                         }
                }
                catch (Exception ex)
                {
                    ponAviso(ex.Message);
                }             
            }          
        }
        #endregion

        #region SubirFichero(int idMaterial)
        protected void SubirFichero(int idMaterial)
        {
            //Separa la extensión del nombre del archivo para validarla
            string[] nomExt = this.FileUpload1.FileName.Split('.');
            string tipoFile = nomExt[nomExt.Length - 1];

    
            //procedemos a guardarla en el Servidor. FileUpload1.SaveAs solicita una cadena de texto con la ruta y el nombre del archivo. Server.MapPath("~/") determina la ruta de nuestra aplicación en el servidor. Si deseamos, le concatenamos otra carpeta, previamente creada

                Directory.CreateDirectory(Server.MapPath("~/") + "/Data/asignaturas/" + idMaterial);

                string direccion = "/Data/asignaturas/" + idMaterial+ "/" + this.FileUpload1.FileName;

                string dirAbsoluta = Server.MapPath("~/") + "Data\\asignaturas\\" + idMaterial + "\\" + this.FileUpload1.FileName;

                //COPIO a DATA
                this.FileUpload1.SaveAs(dirAbsoluta + "_aux");

                File.Copy(dirAbsoluta + "_aux", dirAbsoluta); 
                new ENMaterial().SetArchivoWeb(idMaterial, direccion, FileUpload1.FileName);
                 
                File.Delete(dirAbsoluta + "_aux");
            }
        #endregion

        #region ButtonAñadir_Click(object sender, EventArgs e)
        protected void ButtonAñadir_Click(object sender, EventArgs e)
        {          
            string archivo = FileUpload1.FileName;
            string usuario = Session["correo"].ToString();
            string asignatura = DropDownList1.SelectedItem.Text;
            string titulo = TextBoxTitulo.Text;
            string desc = TextBoxDescripcion.Text;
            bool todoBien = true;

            if (TextBoxTitulo.Text == "")
            {
                lbAviso.Text = "Se debe poner un título al Material";
                lbAviso.Visible = true;
                TextBoxTitulo.Focus();
                todoBien = false;
            }

            if (todoBien == true)
            {
                if (TextBoxDescripcion.Text == "")
                {
                    lbAviso.Text = "Se debe poner una Descripción al Material";
                    lbAviso.Visible = true;
                    TextBoxDescripcion.Focus();
                    todoBien = false;
                }

                if (todoBien == true)
                {
                    if (FileUpload1.FileName != "")
                    {
                        nuestroMaterial = new ENMaterial(usuario, asignatura, titulo, desc);
                        nuestroMaterial.SubirMaterialWeb(nuestroMaterial);
                        if (FileUpload1.HasFile)
                        {
                            DataTable kk = new DataTable();
                            kk = nuestroMaterial.dimeElUltimoMaterial(usuario);
                            SubirFichero(int.Parse(kk.Rows[0][0].ToString()));

                            TextBoxTitulo.Text = "";
                            TextBoxDescripcion.Text = "";
                            Response.Redirect("~/Materiales.aspx");
                        }
                    }
                    else
                    {
                        lbAviso.Text = "Se debe adjuntar el Material";
                        lbAviso.Visible = true;
                        FileUpload1.Focus();
                    }
                }
            }

        }
        #endregion

        #region apagaTodo()
        public void apagaTodo()
        {
            lbAsignatura.Visible = false;
            DropDownList1.Visible = false;
            lbTitulo.Visible = false;
            TextBoxTitulo.Visible = false;
            lbDescripcion.Visible = false;
            TextBoxDescripcion.Visible = false;
            LabelArchivo.Visible = false;
            FileUpload1.Visible = false;
            ButtonAñadir.Visible = false;
        }
        #endregion

        #region enciendeTodo()
        public void enciendeTodo()
        {
            lbAsignatura.Visible = true;
            DropDownList1.Visible = true;
            lbTitulo.Visible = true;
            TextBoxTitulo.Visible = true;
            lbDescripcion.Visible = true;
            TextBoxDescripcion.Visible = true;
            LabelArchivo.Visible = true;
            FileUpload1.Visible = true;
            ButtonAñadir.Visible = true;
        }
        #endregion

        #region ponAviso(string txtAviso)
        public void ponAviso(string txtAviso)
        {
            lbAviso.Text = txtAviso;
            lbAviso.Visible = true;
        }
        #endregion
    }
}
    
